{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "9b079b5b",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "# 0. 环境准备"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "922a144f",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "\n",
    "# 设置pandas可以显示的行数和列数\n",
    "pd.options.display.max_rows = 400\n",
    "pd.options.display.max_columns = None\n",
    "\n",
    "# 忽略warnings\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "#推荐安装插件： nbextensions"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a9cb7609",
   "metadata": {},
   "source": [
    "# 1.读入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f6ac75ef",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>company</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2012-05-18</td>\n",
       "      <td>FB</td>\n",
       "      <td>38.230000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2012-05-21</td>\n",
       "      <td>FB</td>\n",
       "      <td>34.029999</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        date company      price\n",
       "0 2012-05-18      FB  38.230000\n",
       "1 2012-05-21      FB  34.029999"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# date: 日期\n",
    "# company: 公司代码\n",
    "# price: 股价\n",
    "df_stock = pd.read_csv('data/stock_price.csv', parse_dates=['date'])\n",
    "df_stock.head(2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a0f1913d",
   "metadata": {},
   "source": [
    "# 2. 用移动平均法做股价预测"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "db4c8cbb",
   "metadata": {},
   "source": [
    "## 以FB的股票数据为例，站在2022-01-01，预测接下来1天的股价"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "789e64ce",
   "metadata": {},
   "outputs": [],
   "source": [
    "N = 10 #用过去10天的平均值作为对未来的预测\n",
    "\n",
    "his_date_end = pd.to_datetime('2022-01-01')\n",
    "his_date_begin = his_date_end - pd.Timedelta(N-1, unit='D')\n",
    "pred_price = df_stock[ (df_stock['company']=='FB') & \n",
    "                  (df_stock['date']>=his_date_begin) & \n",
    "                  (df_stock['date']<=his_date_end)]['price'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3bde6873",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "341.8816630045573"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pred_price"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e04df4ed",
   "metadata": {},
   "source": [
    "## 以FB的股票数据为例，站在2022-01-01，预测接下来h天的股价"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "c30015a3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>pred_price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2022-01-02</td>\n",
       "      <td>341.881663</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2022-01-03</td>\n",
       "      <td>341.881663</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2022-01-04</td>\n",
       "      <td>341.881663</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2022-01-05</td>\n",
       "      <td>341.881663</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        date  pred_price\n",
       "0 2022-01-02  341.881663\n",
       "1 2022-01-03  341.881663\n",
       "2 2022-01-04  341.881663\n",
       "3 2022-01-05  341.881663"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "N = 10 #用过去10天的平均值作为对未来的预测\n",
    "h = 4 #预测未来4天的股价\n",
    "\n",
    "his_date_end = pd.to_datetime('2022-01-01')\n",
    "his_date_begin = his_date_end - pd.Timedelta(N-1, unit='D')\n",
    "pred_price = df_stock[ (df_stock['company']=='FB') & \n",
    "                  (df_stock['date']>=his_date_begin) & \n",
    "                  (df_stock['date']<=his_date_end)]['price'].mean()\n",
    "\n",
    "target_begin = his_date_end + pd.Timedelta(1, unit='D')\n",
    "target_end = his_date_end + pd.Timedelta( h,unit='D' )\n",
    "pred_result=  pd.DataFrame({'date':pd.date_range(target_begin, target_end, freq='D'),\n",
    "                           'pred_price':[pred_price]*h})\n",
    "pred_result"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "42a5d8a9",
   "metadata": {},
   "source": [
    "# 用ETS算法做股价预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "04712411",
   "metadata": {},
   "outputs": [],
   "source": [
    "from statsmodels.tsa.exponential_smoothing.ets import ETSModel"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2b4a17c8",
   "metadata": {},
   "source": [
    "## 以FB的股票数据为例，站在2022-01-01，预测接下来h天的股价"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "b21e3351",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>date</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-09-02</th>\n",
       "      <td>89.889999</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-08-08</th>\n",
       "      <td>38.540001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-09-12</th>\n",
       "      <td>20.930000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-07-06</th>\n",
       "      <td>240.279999</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-04-27</th>\n",
       "      <td>108.889999</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 price\n",
       "date                  \n",
       "2015-09-02   89.889999\n",
       "2013-08-08   38.540001\n",
       "2012-09-12   20.930000\n",
       "2020-07-06  240.279999\n",
       "2016-04-27  108.889999"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 构建训练集\n",
    "his_date_end = pd.to_datetime('2022-01-01')\n",
    "data_train = df_stock[ (df_stock['company']=='FB') & \n",
    "                     (df_stock['date']<=his_date_end)]\n",
    "\n",
    "# 把日期变成训练集的index\n",
    "data_train = data_train[['date','price']].set_index('date')\n",
    "data_train.sample(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "ae6cac77",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda\\setup\\envs\\py4fi\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:471: ValueWarning: A date index has been provided, but it has no associated frequency information and so will be ignored when e.g. forecasting.\n",
      "  self._init_dates(dates, freq)\n"
     ]
    }
   ],
   "source": [
    "# 构建模型\n",
    "model = ETSModel( data_train['price'] )\n",
    "fit = model.fit( )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c6b55476",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([18635., 18642., 18649., 18659., 18666., 18673., 18680., 18687.]),\n",
       " [Text(0, 0, ''),\n",
       "  Text(0, 0, ''),\n",
       "  Text(0, 0, ''),\n",
       "  Text(0, 0, ''),\n",
       "  Text(0, 0, ''),\n",
       "  Text(0, 0, ''),\n",
       "  Text(0, 0, ''),\n",
       "  Text(0, 0, '')])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 模型拟合结果可视化\n",
    "data_train['fit_price'] = fit.fittedvalues\n",
    "data_plot = data_train[ (data_train.index>='2021-01-01') & \n",
    "                      (data_train.index<='2021-03-01')]\n",
    "plt.plot( data_plot['price'], '.-',label='actual' )\n",
    "plt.plot( data_plot['fit_price'],'.-', label='fit' )\n",
    "plt.legend()\n",
    "plt.xticks(rotation=90)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "cadc9934",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\Anaconda\\setup\\envs\\py4fi\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:843: ValueWarning: No supported index is available. Prediction results will be given with an integer index beginning at `start`.\n",
      "  data=self.data,\n",
      "E:\\Anaconda\\setup\\envs\\py4fi\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:843: ValueWarning: No supported index is available. Prediction results will be given with an integer index beginning at `start`.\n",
      "  data=self.data,\n",
      "E:\\Anaconda\\setup\\envs\\py4fi\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:843: ValueWarning: No supported index is available. Prediction results will be given with an integer index beginning at `start`.\n",
      "  data=self.data,\n",
      "E:\\Anaconda\\setup\\envs\\py4fi\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:843: ValueWarning: No supported index is available. Prediction results will be given with an integer index beginning at `start`.\n",
      "  data=self.data,\n"
     ]
    }
   ],
   "source": [
    "# 预测未来h天\n",
    "h = 10\n",
    "pred_price = fit.get_prediction(start=data_train.shape[0]+1,\n",
    "                               end = data_train.shape[0]+h)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "6dc5dde8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mean</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2423</th>\n",
       "      <td>336.763057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2424</th>\n",
       "      <td>336.763057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2425</th>\n",
       "      <td>336.763057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2426</th>\n",
       "      <td>336.763057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2427</th>\n",
       "      <td>336.763057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2428</th>\n",
       "      <td>336.763057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2429</th>\n",
       "      <td>336.763057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2430</th>\n",
       "      <td>336.763057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2431</th>\n",
       "      <td>336.763057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2432</th>\n",
       "      <td>336.763057</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            mean\n",
       "2423  336.763057\n",
       "2424  336.763057\n",
       "2425  336.763057\n",
       "2426  336.763057\n",
       "2427  336.763057\n",
       "2428  336.763057\n",
       "2429  336.763057\n",
       "2430  336.763057\n",
       "2431  336.763057\n",
       "2432  336.763057"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pred_price.summary_frame()[['mean']]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0ce6d8cb",
   "metadata": {},
   "source": [
    "# 时间序列平稳性"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c3637687",
   "metadata": {},
   "source": [
    "ACF检验 (Auto-Correlation Function, 自相关系数检验） \n",
    "$$ r_h = Cor( X_t, X_{t+h} ) , \\forall t$$\n",
    "如果每隔h个单位，ACF值有一个局部高峰，则数据存在以h为单位的周期性"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d42c1be8",
   "metadata": {},
   "source": [
    "## 检验FB股票数据的平稳性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "ab0945dd",
   "metadata": {},
   "outputs": [],
   "source": [
    "from  statsmodels.graphics.tsaplots import plot_acf, plot_pacf\n",
    "\n",
    "df = df_stock[ (df_stock['company']=='FB')].sort_values('date')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "9d62d99d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x232e2294ac8>]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot( df['date'], df['price'] )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "e18bb082",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_acf(df['price']).show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5e52fdfc",
   "metadata": {},
   "source": [
    "自相关性系数大，说明时间序列不平稳，（逐步趋于0，说明渐渐平稳，[ref-link](https://zhuanlan.zhihu.com/p/376716488)）"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2a21bed8",
   "metadata": {},
   "source": [
    "## 通过差分的方式，获取平稳的时间序列"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "53c82670",
   "metadata": {},
   "source": [
    "差分的定义： $$ y^1_t = y_t - y_{t-1} $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "1c8d1660",
   "metadata": {},
   "outputs": [],
   "source": [
    "df['price_last'] = df['price'].shift(1)\n",
    "df['price_diff'] = df['price'] -df['price_last']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "a25bd5d0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x232e3390c88>]"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot( df['date'], df['price_diff'] )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "d12b185c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_acf(df['price_diff']).show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cd5a7981",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "# 使用Arima做预测"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2bb416e5",
   "metadata": {
    "hidden": true
   },
   "source": [
    " ## 以FB的股票数据为例，站在2022-01-01，预测接下来h天的股价"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "bd985ce0",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>company</th>\n",
       "      <th>price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2012-05-18</td>\n",
       "      <td>FB</td>\n",
       "      <td>38.230000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2012-05-21</td>\n",
       "      <td>FB</td>\n",
       "      <td>34.029999</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2012-05-22</td>\n",
       "      <td>FB</td>\n",
       "      <td>31.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2012-05-23</td>\n",
       "      <td>FB</td>\n",
       "      <td>32.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2012-05-24</td>\n",
       "      <td>FB</td>\n",
       "      <td>33.029999</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        date company      price\n",
       "0 2012-05-18      FB  38.230000\n",
       "1 2012-05-21      FB  34.029999\n",
       "2 2012-05-22      FB  31.000000\n",
       "3 2012-05-23      FB  32.000000\n",
       "4 2012-05-24      FB  33.029999"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 构建训练集\n",
    "his_date_end = pd.to_datetime('2022-01-01')\n",
    "data_train = df_stock[ (df_stock['company']=='FB') & \n",
    "                     (df_stock['date']<=his_date_end)].sort_values('date')\n",
    "data_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "33609f27",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "# 通过ACF判断确定I阶数d， 要求是d阶差分是平稳的\n",
    "d = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "21655803",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# AR的阶数p可以通过pacf （偏相关性系数） 图来设定，因为AR各项的系数就代表每两个时间间隔的相关性\n",
    "# 要求p以后的偏相关性系数比较小\n",
    "from  statsmodels.graphics.tsaplots import plot_pacf\n",
    "plot_pacf( data_train['price'] ).show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "703e069c",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "p = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "1332d36b",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": [
    "# 通过差分的ACF判断确定MA阶数q， 要求是q以后的自相关性系数比较小\n",
    "q = 0 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "81cac70b",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABY60lEQVR4nO29eXxcV3n//z539tGM9s1aLVuW9yWO14TECYEQSCAsTZN8+2spUELYuqQFvkDLTr98G6AtZflCCg2UEFIIUChL9sRJHMex432VZVmLJWsfaTT7vff8/hjNRLJWSzOakXzer5dfHp27nTtz7+c+9znPeR4hpUShUCgUiwst0x1QKBQKRepR4q5QKBSLECXuCoVCsQhR4q5QKBSLECXuCoVCsQixZroDAMXFxXLp0qWZ7oZCoVAsKA4cONArpSyZaFlWiPvSpUvZv39/pruhUCgUCwohRMtky5RbRqFQKBYhStwVCoViEaLEXaFQKBYhWeFzVygWGrFYjPb2dsLhcKa7orgCcDqdVFVVYbPZZryNEneFYha0t7fj9XpZunQpQohMd0exiJFS0tfXR3t7O3V1dTPeTrllFIpZEA6HKSoqUsKuSDtCCIqKii77LVGJu0IxS5SwK+aL2VxrStwVCoViEaJ87gpFCnjmmWcYHBxM2f7y8vK48cYbp1znX//1X3nggQeQUvL+97+fv/7rvwbgc5/7HA888AAlJfGJi//4j//IW97yFl588UU++MEP4nA4ePjhh6mvr8fn83HnnXfyhz/8Ia1vIj/72c/4zGc+Q3l5Offffz8/+tGP+MY3vjFuvcSExuLi4kn3FQ6HsdlsWCyWlPXvL/7iL7jvvvtYs2bNpOv86le/oqGhYcp1UsGDDz7I/v37+eY3vzmn/ShxVyhSwODgIPn5+Snbn8/nm3L5sWPHeOCBB9i3bx92u51bbrmFW2+9lRUrVgDwN3/zN/zd3/3dmG2+9rWv8eijj3L+/Hm+853v8LWvfY0vfvGLfOpTn0q7i+n73/8+3/72t5MPrC1btsxqP4ZhEAqFiEajeDweNC01zod///d/n3adX/3qV9x2222XJe66rmO1ZkZmlVtGoViAnDx5kh07duB2u7FarezatYtf/vKXU25js9kIhUIEg0FsNhtNTU1cuHCBXbt2TbrNK6+8wjXXXMPGjRvZtm0bfr+fcDjMe97zHtavX89VV13FM888A8Qtzne+853ccsstrFixgo9//OMAfOELX+CFF17g3nvv5WMf+xjPPvsst912GwB9fX3cfPPNXHXVVXzgAx9gdGW4H//4x2zbto1NmzbxgQ98AMMwiMViVFdX8/nPf56NGzeyY8cOurq6AOjq6uId73gHGzduZOPGjezZs2fS/VzKDTfckEyB4vF4+PSnPz1m/3v27OHXv/41H/vYx9i0aRNNTU00NTVxyy23cPXVV3Pddddx6tQpAP78z/+c++67jxtvvJGPfexjLF26dMzDur6+nq6uLn7zm9+wfft2rrrqKt7whjckzyNVKHFXKBYg69atY/fu3fT19REMBvnd735HW1tbcvk3v/lNNmzYwHvf+14GBgYA+OQnP8k999zDv/zLv/CRj3yET3/603zxi1+c9BjRaJQ777yTf/3Xf+Xw4cM8+eSTuFwuvvWtbwFw9OhRHn74Yd797ncnIzkOHTrEI488wtGjR3nkkUdoa2vjM5/5DFu2bOGhhx7i/vvvH3OMz3/+87zuda/j4MGDvO1tb6O1tRWIP7weeeQRXnzxRQ4dOoTFYuHHP/4xkUiEQCDAtm3b2L17N9dccw0PPPAAAH/5l3/Jrl27OHz4MK+++ipr166dcD8PPfTQlN9tIBBgx44dHD58mOuvv54HHniAa665hre97W3cf//9HDp0iOXLl3PPPffwb//2bxw4cICvfvWrfOhDH0ru48yZMzz55JP88z//M7fffnvywfvyyy+zdOlSysrKeN3rXsfevXs5ePAgd911F//0T/80o99+pii3jEKxAFm9ejWf+MQneOMb34jH42Hjxo3J1/8PfvCD/MM//ANCCP7hH/6Bv/3bv+UHP/gBmzZtYu/evQDs3r2biooKpJTceeed2Gw2vva1r1FWVpY8xunTp1myZAlbt24FIDc3F4AXXniBj370owCsWrWK2tpazpw5A8BNN91EXl4eAGvWrKGlpYXq6upJz2P37t384he/AODWW2+loKAAgKeeeooDBw4kjx0KhSgqKsI0Tex2O29+85sBWLt2bdJCf/rpp/nRj34EgMViIS8vj//8z/8ct5/S0tIpv1u73Z58s7j66qt54oknxq0zPDzMnj17uOOOO5JtkUgk+fmOO+5IjgnceeedfOELX+A973kPP/3pT7nzzjuB+FyJO++8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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 构建Arima模型\n",
    "# import statsmodels.api as sm\n",
    "# model = sm.tsa.arima.ARIMA(data_train['price'].values, order=(p,d,q))\n",
    "# fit = model.fit()\n",
    "# fit.summary()\n",
    "\n",
    "from statsmodels.tsa.arima.model import ARIMA\n",
    "from statsmodels.graphics.tsaplots import plot_predict\n",
    "\n",
    "model = ARIMA(data_train['price'].values, order=(p,d,q))\n",
    "fit = model.fit()\n",
    "\n",
    "# 模型拟合结果可视化\n",
    "plot_predict(fit, start=1000, end = 1100, dynamic=False).show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "a7b0c3f1",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "## 换一组参数可以让模型的结果更复杂\n",
    "\n",
    "model = ARIMA(data_train['price'].values, order=(2,2,0))\n",
    "fit = model.fit()\n",
    "\n",
    "# 模型拟合结果可视化\n",
    "fit.plot_predict(start=1000, end = 1100, dynamic=False).show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "a81ef9f3",
   "metadata": {
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([333.47033105, 329.8134213 , 325.18798593, 321.45814749,\n",
       "       317.39325686, 313.29622802, 309.31879503, 305.26740753,\n",
       "       301.23117802, 297.20534408])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 模型预测\n",
    "h = 10\n",
    "fit.forecast(h)[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7701acd9",
   "metadata": {
    "hidden": true
   },
   "source": [
    "另外， 大家还可以通过auto arima自动调整p, d, q\n",
    "https://pypi.org/project/pmdarima/\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
